java面试技巧
简历
1.HR看简历,都是看技术关键词。可以多看招聘要求,简历上要多写些关键词。比如集合,多线程,并发,spring,mysql,redis,kafka,es,springCloud, dubbo, zookeeper, 分布式,微服务等等。
2.可以准备多份简历,根据不同的jd发送不同的简历。
3.网上简历做成pdf格式会好一些,word因为版本原因可能排版会变乱。
4.网上简历可以稍微夸大一下,半懂不懂的也写上去。纸质简历一定要将半懂不懂的技术去掉。当然,最好还是保持一致。
5.没有了解过的技术,不要写在纸质简历上,一问就蒙了。
6.频繁跳槽的经历,可以合成一段。频繁跳槽给人的印象很差。
7."个人评价"直接写技术栈,不要写乐观向上,团结友爱这些。
8."项目经验"除了介绍项目,还要写清楚涉及到的技术内容,以及自己负责的模块。
9.博客、GitHub都是加分项。不要担心自己写的东西很简单,其实几乎没有面试官会去看的。
10.阅读过Java源码,Spring源码。这些也是加分项。
项目经验
项目简介:
我任任职XX公司XX部门,该部门后台系统主要由API模块,APP后台模块,算法模块以及数据模块组成。后台的任务通过分布式任务系统进行任务管理。
责任描述:
我主要负责XX模块,实现了XX功能、XX功能和XX功能。XX功能运用到了XX技术……
技术要点:
整套系统部署在公司的服务器上,主要基于公司的Mysql集群和Redis集群做数据存储,使用MQ集群做消息队列,基于ZK集群搭建高可用系统,前期我们服务之前的调用方式都是基于HTTP的方式,服务耦合性较高,后期我们基于SpringCloud框架做了整个系统的微服务化,进行解耦。
项目亮点:
- 海量数据。千万级别。
- 高并发。高可用。高性能。
- 业务复杂度高。
- 从零到一。
- 微服务项目改造。
内推
内推更靠谱些。直接跳过招聘网站投简历环节,面试的机会更大些。
可以找师兄师姐,或者其他的熟人去内推。没有熟人,也可以在脉脉找人内推,拿内推码。
最好是拿着内推码,自己去选岗位,投简历。内推的人帮你挑的岗位不一定适合你,还是自己挑更好。
注意:内推之前,不要自己投简历。投过了简历,进入公司的简历库,就没法再内推了。
如果面试成功,内推的人是可以拿到奖励的。因此,找朋友内推别不好意思,人家也是愿意拿钱的。
我以前内推过朋友进公司,赚了三天工资。哈哈。
猎头
注意:找猎头推荐之前,不要自己投简历。投过了简历,进入公司的简历库,猎头就没法再推荐了。
投递网站
BOSS直聘:在线聊天,之后再投简历。可以先设置好招呼语,比如:
你好,我正在找java开发的工作。
XX年毕业,本科,XX大学,XX专业。
java基础扎实,熟悉io,集合,多线程,并发;
熟悉spring,springMvc,mybatis,springBoot,springCloud等框架,
熟悉分布式/微服务,缓存redis,消息队列kafka,服务协调zookeeper等。
拉勾网:专注互联网招聘。可以直接上传简历,非常方便,还可以查看面试的评价。
猎聘网:会有猎头来找你。可以设置成只有猎头可以查看。
其他:51job、智联招聘。
注意:除非实在找不到工作,否则记得将简历设置成不可查看,不然一大堆外包公司打电话过来。
记得时常刷新简历。这样猎头更容易找到你。
面试练手
- 面试最好先练手。不要直接就投递给大公司。先投简历给一些中小型公司,总结自己的不足,然后再去心仪的公司面试,这样拿到好offer的机率更大。
- 面试几家练练手后,就可以投给比较大的公司了。筛选出500-2000人以上的公司。
- 如果工作比较忙,请不到假,又想面试练手,可以投递其他城市的公司,然后视频面试。
比如你在广州,可以投其他一线城市的公司练手。
注意,不要投在各个城市都有岗位的公司,可能会影响面评。
像字节,在北上广深都有岗位,你面了深圳的字节岗位,要是面评不好,后面再投广州的字节岗位,可能面试机会会变少。
公司
1.最好是互联网行业。有最新的技术。复杂的场景。高可用高并发分布式。
2.技术栈最好要匹配。如果不是理想的技术栈,可能干久了还是没有长进。
3.其次是中大型规模的公司IT部门。最好是几百人以上的公司。
4.其他的选择:
创业公司:做的事情太杂。需要通才,什么脏活累活都得干,加班太多了。而且创业公司随时有裁员、倒闭的可能。
外包公司:外包干久了,只会变成搬运工,而且外包的工作经历可能会减分。
国企:技术特别落后,流程极慢,人际关系复杂。不过国企上班时间很短,适合养老。
外企:外企加班一般不多。而且远程办公的比较多。
5.可以通过脉脉、看准网、职友集这类网站查看公司的评价。
跳槽准备
1.想要跳槽,最好提前两三个月,开始准备面试。
2.离职证明,用彩色打印多几份,章也是红色的,跟原件基本是一样的。万一进错公司,还能留有离职证明。
行业及产品
除了技术栈和薪水,还要考虑行业和产品。
行业背景也很重要。假如你去面试一家金融公司,那么做过有关金融的项目经验就是极大的加分项。
面试资料
1.书籍:《码出高效》(重点看集合和多线程的源码讲解,非常实用),《剑指offer》,《java程序员面试宝典》,《Cracking the Coding Interview(6th)》
2.网站:牛客网、LeetCode、codeTop(高频算法题,很实用)
如果想进大公司,必须刷题。面试时可能需要手写算法。
3.看准网、职友集等平台,面试前可以先查看某公司的面试题。
4.面试题不要死记硬背,理解最重要。看背试题时,多举几个实际例子,理论联系实践,才能深刻理解,深度记忆。
技术模块
优先级:java基础,集合,多线程,并发,ssm,数据库,jvm ,分布式,网络,操作系统。
加分项:高并发、分布式、微服务
其他:linux,git
数据结构和算法:手写代码、手写算法
项目经验:这个主要介绍项目,以及自己负责的模块及技术,因人而异。
如果去大公司面试,非常注重技术广度和技术深度。一般会进行连环炮问法。对某一个知识点,一直深问到底层原理。
比如,问线程池参数,你回答后就会问参数中的"拒绝策略"有哪些?阻塞队列有哪些?队列是默认值是什么?有哪些不同类型的线程池?怎么自己设计一个线程池?
如果想进大公司,一定要多读源码,理解底层原理。
如果是高级开发或者架构,那还会考验系统设计能力、架构能力。
面试
0.面试知识点,最重要的是实践和理解。实践过了,更容易理解,也不容易忘记。
1.完全不懂的,就直接说不会,瞎扯给人的印象更差。
2.半懂不懂的,可以说一时想不起来,让面试官提示一下。
3.不懂的东西,一个字都不要提。不然人家一问就蒙了。比如人家问redis可以做什么?就说缓存,如果没用过分布式锁,千万别提。
4.不要一直由面试官说话。有时可以自己推进。。比如面试官问新建线程的方式有哪些?你回答完之后,还可以再补充一下。说开发中用线程池比较多,那面试官可能就会问你一些线程池的技术。
5.其实,负责java岗位的面试官,有可能是搞c++/php的,也可能是不懂技术的管理人员。遇到不懂技术的,可能适当说些专业术语吹吹牛。不过,一个不懂技术的人来面试java岗位,可能公司是不太靠谱的。
6.平常工作中比较少用到的知识,如果实在理解不了,可以背起来。
7.面试后,多去查一下面试题的答案。其实很多公司的面试题都是网上找的,答错几次,去查资料,下次就能答对了。
如果实在记不住面试时的题目,可以录音,回家后再仔细复盘。
查漏补缺
0.回答问题,最好详情一些。只回答一句话,会让觉得你不懂。
1.回答问题,最好有一个结束语。
2.回答问题时,要慢条斯理。不要让别人觉得你是在背诵。
3.错了好多次的。重点标注。
4.不会英语口语,听说读写,失去很多机会。平时多学英语,可以进外企,还有更多远程办公的机会。
手写代码
1.有时候需要手写代码,最好自己先写一遍。
2.算法:数组、字符串、栈、链表、树、查找算法(尤其二分查找法)、各种排序算法(快排最重要、冒泡比较"低端"),可以看下《剑指offer》
3.设计模式:面试要求写的有单例模式(最好能写线程安全的)、工厂模式、观察者模式、代理模式、生产者消费者模式。
4.就算是写不出来,也可以写些伪代码,或者说一下大体的思路,最重要的就是思路。
5.面试常见的算法题: https://blog.csdn.net/weixin_38118016/article/details/90761111
如果时间不太够,刷LeetCode时,Status选择Top Interview Question,先刷面试常考的
提问问题
面试后面试官可能会问,“你还有什么要问我的?”
1.技术栈有哪些?(重要,有些公司可能技术栈比较落后,有些还得写前端)
2.公司的作息时间。(重要,可以放在第二个问题,如果问能不能接受加班,就说可以接受加班,但想知道加班到几点。)
3.团队做的是什么项目?属于哪些方面?
4.介绍一下技术团队的规模和人员。有几个后端?有几个产品人员?
5.做开发肯定是要加班的,但我想了解一下加班的强度。
6.公司每年有几次普调,几次晋升机会?
7.如果只是练手,也可以问,我有什么可以提高的?
心态
0.往者不可谏,来者犹可追。
1.面试也是提高能力的一种方法。在学习过程中,需要设定目标,分模块逐步学习,测试学习成果,获取反馈,针对不足刻意训练。
而面试就是一种获取反馈的有效手段。可以针对面试不足,不断总结提高。
把面试当成是交流和学习吧,心态放平会好很多。
java面试题
牛客网java面试宝典: https://www.nowcoder.com/issue/tutorial?tutorialId=94&uuid=ea1986fcff294f6292385703e94689e8
个人整理的java面试题: https://www.cnblogs.com/expiator/category/1372059.html